The present invention relates to virtual machine images, and more specifically, to methods and systems for administering and maintaining virtual machine images.
A virtual-machine image captures the complete configuration of one or more applications, including the software on which the applications depend, and can run on any physical machine with a compatible virtual-machine monitor. Thus, image repositories, are convenient and reliable ways for a user community to develop and share applications, including deploying them to physical machines, in the “cloud” or otherwise.
While images allow capturing, identifying, and distributing application configurations, a typical Unix distribution distributes software in the form of many interdependent packages, which are developed by thousands of people over the course of decades and stored by servers on the Internet. Administrators use a package manager to install, configure, remove, and upgrade packages.
Package managers may be used to manage the software configurations of millions of physical machines, from large compute clusters to cell phones. Data and images are easy to clone, version, snapshot, and customize; as a result, the repositories may grow to contain many more images than there are physical machines to run them. In the past, package managers only needed to operate on running systems. Designed with that assumption, package managers do not scale well when the number of images exceeds the physical resources available to run them.